#include "stdafx.h"
#include "Couleur.h"

Couleur::Couleur()
{
	rouge = 0;
	vert = 0;
	bleu = 0;
}

Couleur::Couleur(float r, float v, float b)
{
	rouge = r;
	if(rouge < 0)
		rouge = 0;
	if(rouge > 1)
		rouge = 1;
	bleu = b;
	if(bleu < 0)
		bleu = 0;
	if(bleu > 1)
		bleu = 1;
	vert = v;
	if(vert < 0)
		vert = 0;
	if(vert > 1)
		vert = 1;
}

Couleur::Couleur(float *c)
{
	rouge = c[0];
	vert = c[1];
	bleu = c[2];

	if(rouge < 0)
		rouge = 0;
	if(rouge > 1)
		rouge = 1;
	if(bleu < 0)
		bleu = 0;
	if(bleu > 1)
		bleu = 1;
	if(vert < 0)
		vert = 0;
	if(vert > 1)
		vert = 1;
}

Couleur::Couleur(Couleur const& c)
{
	rouge = c.rouge;
	vert = c.vert;
	bleu = c.bleu;
}

Couleur::~Couleur(){}

Couleur& Couleur::operator=(Couleur const& c)
{
	rouge = c.rouge;
	vert = c.vert;
	bleu = c.bleu;
	return *this;
}

float Couleur::getRouge()
{
	return rouge;
}

float Couleur::getVert()
{
	return vert;
}

float Couleur::getBleu()
{
	return bleu;
}

void Couleur::setRouge(float r)
{
	rouge = r;
}

void Couleur::setVert(float v)
{
	vert = v;
}

void Couleur::setBleu(float b)
{
	bleu = b;
}

void Couleur::ajout(float r, float v, float b)
{
	rouge += r;
	vert += v;
	bleu += b;


	if(rouge > 1)
		rouge = 1;
	
	if(bleu > 1)
		bleu = 1;

	if(vert > 1)
		vert = 1;
}

void Couleur::soustraction(float r, float v, float b)
{
	rouge -= r;
	vert -= v;
	bleu -= b;

	if(rouge < 0)
		rouge = 0;
	
	if(bleu < 0)
		bleu = 0;
	
	if(vert < 0)
		vert = 0;
	
}

Couleur Couleur::operator*(float t)
{
	Couleur c(rouge*t,vert*t,bleu*t);

	return c;
}

Couleur Couleur::operator/(float t)
{
	Couleur c(rouge/t,vert/t,bleu/t);

	return c;
}

Couleur Couleur::operator/=(float c)
{
	rouge /= c;
	bleu /= c;
	vert /= c;
	
	return *this;
}

Couleur Couleur::operator*(Couleur c)
{
	Couleur c1(rouge*c.rouge,vert*c.vert,bleu*c.bleu);

	return c1;
}

Couleur Couleur::operator+(float t)
{
	Couleur c(rouge+t,vert+t,bleu+t);
	return c;
}

Couleur Couleur::operator+(Couleur c)
{
	Couleur c1(rouge+c.getRouge(),vert+c.getVert(),bleu+c.getBleu());
	return c1;
}

Couleur Couleur::operator+=(Couleur c)
{
	rouge += c.getRouge();
	bleu += c.getBleu();
	vert += c.getVert();

	return *this;
}

bool Couleur::operator==(Couleur c)
{
	if(rouge == c.rouge && vert == c.vert && bleu == c.bleu)
		return true;
	else
		return false;
}

bool Couleur::operator!=(Couleur c)
{
	if(rouge != c.rouge || vert != c.vert || bleu != c.bleu)
		return true;
	else
		return false;
}